OLE Word - co jeste v konferenci neni

Otázka od: Lukas Barton

6. 4. 2004 8:48

Prijemny den
Uz jsem se na toto ptal nekolikrat a tak to ykousim opravdu jiz naposledy...


Mam dve metody pripojeni k app Word:

1) pres TOLEContainer
   TOLEContainer.CreateObject('Word.Document', false);

2) Vytvorenim vlastni instance wordu pres Variant
   W : Variant; W := CreateOleObject('Word.Application');


-------

Ad 1] zde nacitam objekt Document z kolekce {Word.}Application.Documents, mam k
dispozici vlastni menu soubor, mam nadefinovane fce pro ukladani do databaze,
tisk (dari se mi pristoupit k objektu - TOLEContainer.OleObject.Application a
proto mohu vyuzit tiskoveho rozhrani wordu).
To co k dispozici nemam je fce Nahled dokumentu. Soubor ukladam pres stream
rovnou do db a nejsou s tim (jiz) zadne problemy (pokud by nekdo chtel poradit
s ukladanim do db pres stream, uz to mam zvladnute   )

Ad 2] do variantu nacitam objekt application - tzn. ze mohu ovladat aplikaci
word jak se mi zlibi. Ukladani a nacitani z db je komplikovanejsi, protoze ho
nejdriv musim ulozit na disk abych mohl volat fci wordu
W.Documents.Open(...params...).
Dokazu si pridat do wordu vlastni menu, docasne disablovat stavajici (napriklad
zakazat ukladani na disk a pridat vlastni menu pro ukladani do db), ale !!!!!!
jak mam zachytit v delphi ze uzivatel klepnul na mnou vytvorene menu z wordu;
jak zjistim ze uzivatel ukoncil word abych mohl v aplikaci pokracovat (ulozeni
do db, zpracovani....) !!!!!!!!!!

A TED TEN NEJDULEZITEJSI PROBLEM!
Rikal jsem si ze kdyz chci nahled, zobrazim dokument primo ve wordu pres
variant s atributem jen pro cteni a na druhou stranu upravy a tisky a ukladanim
do db si poresim v dokumentu otviranem pres TOLEContainer. Ale ejhle! Soubor
vytvoreny v TOLEContaineru, kdyz jej ulozim na disk nelze otevrit ve wordu a
naopak soubor vytvoreny ve wordu nenactu do TOLEContaineru.

-------

Pokud vite jak otevrit dokument wordu v TOLEContaineru poradte mi, nebo pokud
vas napadne lepsi napad jak toto resit poradte mi prosim taky, uz nad tim badam
14 dni... Myslim ze praci s Word, Excel pres OLE mam zvladlou vyborne ale tohle
me nici  

Poznamka:
TOLEContainer lze otevirat pouze jako word.document (.documents nebo
..application je naprosto neprispuste) naopak
CreateOleObject lze volat pouze s word.application.


Predem moc dekuji.



Hezky den

------- Lukas Barton --------
email: barton@labsys.cz
ICQ: 116-948-331
url: www.labsys.cz
: Delphi 4 c/s
: oracle 9.2.0.1
: w2k sp2
-----------------------------

Odpovedá: Lukas Barton

7. 4. 2004 13:33

Plne mi stacilo
  OleContainer1.SaveAsDocument('d:\pok01.doc');

Dekuji mockrat....


> ------- Lukas Barton --------
> email: barton@labsys.cz
> ICQ: 116-948-331
> url: www.labsys.cz
> : Delphi 4 c/s
> : oracle 9.2.0.1
> : w2k sp2
> -----------------------------

-----Original Message-----
From: Bohac Frantisek [mailto:bohacf@vnol.cz]
Posted At: Wednesday, April 07, 2004 8:48 AM
Posted To: Delphi konference
Conversation: OLE Word - co jeste v konferenci neni
Subject: Re: OLE Word - co jeste v konferenci neni


Ahoj,

mozna by to ukladani slo udelat s pomoci:

     OleContainerWord.OLEObject.SaveAs(FileName:= FileName,
       FileFormat:= 0);

Je to uvedene tady:

http://entwickler-forum.de/webx?128@217.YIhyaN9Rbq7.0@.ee8c582

Kdyz to bude ulozene s pomoci OLE, tak by se to teoreticky dalo otevrit v
pohode ve Wordu.

U mne to pise: Interface not supported ... asi mam nejak nakople registry, ale
reinstalovat se mi to nechce ...

Tady jsou nejake priklady:
http://www.unitoops.com/uoole/examples/embedtest.htm

Zkousel jsem taky:

OleContainer1.SaveAsDocument('d:\pok01.doc');

a potom to v pohode otevru ve Wordu...

Kdyz to oteviras na dvou mistech soucasne (pokud to dobre chapu), nemuze byt
problem v tom, ze word si soubor automaticky uzamyka?

A dobre komponenty pro praci s Wordem jsou MSOAddIn - tam se da nadefinovat, co
se ma delat, kdyz se vyvola nejaka udalost ve Wordu (treba poslat nejakou
zpravu windows ...)


Taky jsem resil problem, jak do mailu ve Wordu vlozit emailovou adresu, ale bez
MS Outlook asi neni sance  

Preji Ti mnoho stesti at to vyresis.

F.

P.S.
Omlouvam se, ze je to tak zmatene - snad to prelouskas a bute to mit alespon
mizivy prinos...

----- Original Message -----
From: "Lukas Barton" <delphikonf@cross.cz>
To: <delphi-l@clexpert.cz>
Sent: Tuesday, April 06, 2004 9:17 AM
Subject: OLE Word - co jeste v konferenci neni


> Prijemny den
> Uz jsem se na toto ptal nekolikrat a tak to ykousim opravdu jiz
naposledy...
>
>
> Mam dve metody pripojeni k app Word:
>
> 1) pres TOLEContainer
> TOLEContainer.CreateObject('Word.Document', false);
>
> 2) Vytvorenim vlastni instance wordu pres Variant
> W : Variant; W := CreateOleObject('Word.Application');
>
>
> -------
>
> Ad 1] zde nacitam objekt Document z kolekce
> {Word.}Application.Documents,
mam k dispozici vlastni menu soubor, mam nadefinovane fce pro ukladani do
databaze, tisk (dari se mi pristoupit k objektu -
TOLEContainer.OleObject.Application a proto mohu vyuzit tiskoveho rozhrani
wordu).
> To co k dispozici nemam je fce Nahled dokumentu. Soubor ukladam pres
stream rovnou do db a nejsou s tim (jiz) zadne problemy (pokud by nekdo chtel
poradit s ukladanim do db pres stream, uz to mam zvladnute   )
>
> Ad 2] do variantu nacitam objekt application - tzn. ze mohu ovladat
aplikaci word jak se mi zlibi. Ukladani a nacitani z db je komplikovanejsi,
protoze ho nejdriv musim ulozit na disk abych mohl volat fci wordu
W.Documents.Open(...params...).
> Dokazu si pridat do wordu vlastni menu, docasne disablovat stavajici
(napriklad zakazat ukladani na disk a pridat vlastni menu pro ukladani do db),
ale !!!!!! jak mam zachytit v delphi ze uzivatel klepnul na mnou vytvorene menu
z wordu; jak zjistim ze uzivatel ukoncil word abych mohl v aplikaci pokracovat
(ulozeni do db, zpracovani....) !!!!!!!!!!
>
> A TED TEN NEJDULEZITEJSI PROBLEM!
> Rikal jsem si ze kdyz chci nahled, zobrazim dokument primo ve wordu
> pres
variant s atributem jen pro cteni a na druhou stranu upravy a tisky a ukladanim
do db si poresim v dokumentu otviranem pres TOLEContainer. Ale ejhle! Soubor
vytvoreny v TOLEContaineru, kdyz jej ulozim na disk nelze otevrit ve wordu a
naopak soubor vytvoreny ve wordu nenactu do TOLEContaineru.
>
> -------
>
> Pokud vite jak otevrit dokument wordu v TOLEContaineru poradte mi,
> nebo
pokud vas napadne lepsi napad jak toto resit poradte mi prosim taky, uz nad tim
badam 14 dni... Myslim ze praci s Word, Excel pres OLE mam zvladlou vyborne ale
tohle me nici  
>
> Poznamka:
> TOLEContainer lze otevirat pouze jako word.document (.documents nebo
...application je naprosto neprispuste) naopak
> CreateOleObject lze volat pouze s word.application.
>
>
> Predem moc dekuji.
>
>
>
> Hezky den
>
> ------- Lukas Barton --------
> email: barton@labsys.cz
> ICQ: 116-948-331
> url: www.labsys.cz
> : Delphi 4 c/s
> : oracle 9.2.0.1
> : w2k sp2
> -----------------------------
>
>
>
>